package yyn

const (
	TokenUrl        = "/oauth/oauth/token"
	CowHouseListUrl = "/duijie/v1/breed/synCowHouseInfo"
)

type TokenResponse struct {
	AccessToken string `json:"access_token"`
	TokenType   string `json:"token_type"`
	ExpiresIn   int    `json:"expires_in"`
	Scope       string `json:"scope"`
}

type CowsHouseResponse struct {
	MsgCode    string      `json:"msgCode"`
	Msg        string      `json:"Msg"`
	Content    *Content    `json:"content"`
	Status     int         `json:"status"`
	Total      int         `json:"total"`
	ErrContent interface{} `json:"errContent"`
	ErrCount   interface{} `json:"errCount"`
	ErrId      int         `json:"errId"`
}

type Content struct {
	ModelType    string      `json:"modelType"`
	TimeStamp    string      `json:"timeStamp"`
	CowHouseList []*CowHouse `json:"cowHouseList"`
}

type CowHouse struct {
	FarmUuid      string `json:"farmUuid"`
	FarmNum       string `json:"farmNum"`
	FarmName      string `json:"farmName"`
	HouseUuid     string `json:"houseUuid"`
	HouseNum      string `json:"houseNum"`
	HouseType     string `json:"houseType"`
	HouseTypeName string `json:"houseTypeName"`
	HouseName     string `json:"houseName"`
	CowAmount     string `json:"cowAmount"`
}

type MqttMessage struct {
	ReqMethod string `json:"reqMethod"`
	RegCode   string `json:"regCode"`
	Command   string `json:"command"`
	ModelType string `json:"model_type"`
	ApiId     string `json:"apiId"`
	Param     *Param `json:"param"`
}

type Param struct {
	FarmId     string      `json:"farmId"`
	Method     string      `json:"method"`
	Code       string      `json:"code"`
	ErrMessage string      `json:"errMessage"`
	RowCount   string      `json:"rowCount"`
	ResultData interface{} `json:"resultData"`
}

// DryMatterResultData 干物质
type DryMatterResultData struct {
	QualityDate string `json:"qualityDate"`
	RecipeId    string `json:"recipeId"`
	RecipeName  string `json:"recipeName"`
	PenId       string `json:"penId"`
	PenName     string `json:"penName"`
	TmrNo       string `json:"tmrNo"`
	LoadShift   string `json:"loadShift"`
	DryMatter   string `json:"drymatter"`
	StartTime   string `json:"startTime"`
	EndTime     string `json:"endTime"`
}

// UploadDiliverData 撒料数据
type UploadDiliverData struct {
	DropDate     string `json:"dropDate"`     // 撒料日期
	TmrNo        string `json:"tmrNo"`        // 车次
	DropShift    string `json:"dropShift"`    // 撒料班次
	PenId        string `json:"penId"`        // 栏舍Id
	PenName      string `json:"penName"`      // 栏舍名称
	CowCount     string `json:"cowCount"`     // 牛头数
	FeedingNo    string `json:"feedingNo"`    // 撒料顺序
	ExpWeight    string `json:"expWeight"`    // 期望重量
	ActualWeight string `json:"actualWeight"` // 实际重量
	StartTime    string `json:"startTime"`    // 开始时间
	EndTime      string `json:"endTime"`      // 结束时间
	TmrName      string `json:"tmrName"`      // tmr名称
	ElabLoadId   int64  `json:"elabLoadId"`   // dtm撒料ID
}

// MqttOverPlusData 剩料数据
type MqttOverPlusData struct {
	OverPlusDate string `json:"overPlusDate"`
	PenId        string `json:"penId"`
	PenName      string `json:"penName"`
	ActualWeight string `json:"actualWeight"`
	StartTime    string `json:"startTime"`
	EndTime      string `json:"endTime"`
}

// FormulationData 配方数据
type FormulationData struct {
	RecipeId   string  `json:"recipeId"`    // 配方 id
	RecipeName string  `json:"recipeName"`  // 配方名称
	IngId      string  `json:"ingId"`       // 原料 id
	IngName    string  `json:"ingName"`     // 原料名称
	DmQty      string  `json:"dmQty"`       // 原料干物质质量
	AfQty      string  `json:"afQty"`       // 原料重量
	RecipeCost string  `json:"recipeCost"`  // 配方成本
	MixNo      string  `json:"mixNo"`       // 搅拌顺序
	IsPreMix   bool    `json:"isPreMix"`    // 是否预拌
	DmPercTot  float64 `json:"dm_perc_tot"` // 配方干物质百分比
}

// MixData 搅拌数据
type MixData struct {
	LoadDate       string `json:"loadDate"`        // 加料日期
	TmrNo          string `json:"tmrNo"`           // 车次
	LoadShift      string `json:"loadShift"`       // 班次
	RecipeId       string `json:"recipeId"`        // 配方id
	RecipeName     string `json:"recipeName"`      // 配方名称
	IngId          string `json:"ingId"`           // 原料id
	IngName        string `json:"ingName"`         // 原料名称
	IngType        string `json:"ingType"`         // 原料类型
	DmPct          string `json:"dmPct"`           // 原料干物质占比
	MixNo          string `json:"mixNo"`           // 搅拌数据
	AllowableError string `json:"allowable_error"` // 是否允许误差
	ExpWeight      string `json:"expWeight"`       // 原料期望重量
	ActualWeight   string `json:"actualWeight"`    // 原料实际重量
	StartTime      string `json:"startTime"`       // 开始时间
	EndTime        string `json:"endTime"`         // 结束时间
	TmrName        string `json:"tmrName"`         // 司机名称
	ElabLoadId     int    `json:"elabLoadId"`      // dtm搅拌id
}

// DryMatter 干物质数据
type DryMatter struct {
	QualityDate string `json:"qualityDate"`         // 剩料日期
	RecipeId    string `json:"recipeId"`            // 配方id
	RecipeName  string `json:"recipeName"`          // 配方名称
	PenId       string `json:"penId,omitempty"`     // 栏舍id
	PenName     string `json:"penName,omitempty"`   // 栏舍名称
	TmrNo       string `json:"tmrNo,omitempty"`     // 车次
	LoadShift   string `json:"loadShift,omitempty"` // 班次
	Drymatter   string `json:"drymatter"`           // 干物质
	StartTime   string `json:"startTime"`           // 开始时间
	EndTime     string `json:"endTime"`             // 结束时间
	ElabLoadId  int64  `json:"elabLoadId"`          // dtmId
}

// AccuracyData 撒料准确率数据
type AccuracyData struct {
	RateDate  string `json:"RateDate"`
	Name      string `json:"Name"`
	Rate      string `json:"Rate"`
	StartTime string `json:"startTime"`
	EndTime   string `json:"endTime"`
}

type PlanWeightData struct {
	CompleteWeight string `json:"completeWeight"`
	WeightDate     string `json:"weightDate"`
	PlanWeight     string `json:"planWeight"`
	StartTime      string `json:"startTime"`
	EndTime        string `json:"endTime"`
}

type PlanCarNumberData struct {
	CompleteCar string `json:"completeCar"`
	CarDate     string `json:"carDate"`
	PlanCar     string `json:"planCar"`
	StartTime   string `json:"startTime"`
	EndTime     string `json:"endTime"`
}
